package collection._05TreeSet;

import java.util.Comparator;
import java.util.TreeSet;

public class Demo02 {
    /**
     * 方式2：
     * 比较器排序；创建TreeSet对象的时候
     * 传递比较器Comparator指定规则
     * 使用原则：默认使用第一种，若不满这次需求，就使用
     * 第二种
     */
    public static void main(String[] args) {
        /**
         * 需求：
         *      存入四个字符串：
         *          “c”,"ab","df","qwer"
         * 按照长度排序，如果一样长就按照首字母排序
         */

        //传递比较器Comparator排序

        /*
        //o1表示当前要添加的元素
            //o2表示已经在红黑树中存在的元素
            //返回值：负数 -> 当前要添加的元素是小的，存左边
            //          正数 -> 当前要添加的元素是大的，存右边
            //           0  -> 当前要添加的元素已经存在，舍弃
         */
        /*TreeSet treeSet = new TreeSet<>(new Comparator<String>() {
            @Override

            public int compare(String o1, String o2) {
                //按照长度进行排序
                int i = o1.length() - o2.length();
                //如果长度一样暗账首字母排序（默认的排序规则）
                i = i == 0 ? o1.compareTo(o2) : i;
                return i;
            }
        }*/

            //用Lambda：
            TreeSet<String> treeSet = new TreeSet<>((o1, o2) -> {
                //按照长度进行排序
                int i = o1.length() - o2.length();
                //如果长度一样暗账首字母排序（默认的排序规则）
                i = i == 0 ? o1.compareTo(o2) : i;
                return i;
            });





        treeSet.add("c");
        treeSet.add("ab");
        treeSet.add("df");
        treeSet.add("qwer");

        System.out.println(treeSet);


    }
}

